<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单收集 函数柯里化</title>
</head>

<body>
    <div id="test"></div>
    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入react-dom库 -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入babel 转换jsx的库 -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <!-- 引入PropType库  min没有警告-->
    <script type="text/javascript" src="../js/prop-types.js"></script>

    <script type="text/babel">/* 此处要写babel */
        // 创建组件
        class Demo extends React.Component {
            state = {
                username: '',
                password: ''
            }
            // 保存表单中的数据
            // 函数柯里化  把一个函数的参数进行拆分，拆分成多个函数，每个函数只负责接收一个参数
            // 函数一 接收dataType
            // 函数二 接收event
            saveFormData = (dataType) => (event) => {
                this.setState({ [dataType]: event.target.value });
            }

            // // 函数一 接收dataType
            // saveFormData = (dataType) => {
            //     // 函数二 接收event
            //     return (event) => {
            //         this.setState({ [dataType]: event.target.value });
            //     }
            // }

            handleSubmit = () => {
                event.preventDefault();
                const { username, password } = this.state;
                alert(`用户名：${username} 密码：${password}`);

            }
            render() {
                return (
                    <form onSubmit={this.handleSubmit} action="http://www.atguigu.com">
                        用户名：<input type="text" name="username" onChange={this.saveFormData("username")} />
                        密码：<input type="password" name="password" onChange={this.saveFormData("password")} />
                        <button>登录</button>
                    </form>
                )
            }

            // // onChange接受回调函数另外一种写法
            // saveFormData = (dataType, event) => {
            //     this.setState({ [dataType]: event.target.value });
            // }
            // render() {
            //     return (
            //         <form onSubmit={this.handleSubmit}>
            //             用户名：<input type="text" name="username" onChange={event => this.saveFormData("username", event)} />
            //             密码：<input type="password" name="password" onChange={event => this.saveFormData("password", event)} />
            //             <button>登录</button>
            //         </form>
            //     )
            // }

        }

        const root = ReactDOM.createRoot(document.getElementById('test'));
        root.render(<Demo />);


    </script>
</body>

</html>